Complex systems frequently depend on multiple upstream and downstream processes. For example, an order fulfillment network (which may be a chain of both computing and non-computing processes that work together to fulfill a customer order) is a complex system that makes business-critical decisions based on information received from a sequence of upstream and downstream processes. An upstream process can include any process that can send a call or an event (including a request) to the system, whereas a downstream process can include any process to which the system can send a call or an event (including a request).
In particular, an example of an upstream process in an order fulfillment network includes a customer placing an order and providing payment information. The order fulfillment network may receive the order and submit a request to a downstream process, such as a payment gateway, to verify the customer's payment information and process a charge. In response to this request, the payment gateway may provide any of several responses. For example, the payment gateway may successfully authenticate the customer's payment information and process a charge. Alternatively, the payment gateway may not be able to process the customer's payment information and decline a charge. In each of these cases, the payment gateway may provide a response to the order fulfillment network indicating either a successful charge or a failure. In addition, it may be the case that no response is received from the payment gateway in a certain period of time, and the request times out. Furthermore, the order fulfillment network may include any additional number of upstream and downstream processes.